[IA64] Fix PV break fault handler.
authorAlex Williamson <alex.williamson@hp.com>
Sun, 30 Dec 2007 19:56:16 +0000 (12:56 -0700)
committerAlex Williamson <alex.williamson@hp.com>
Sun, 30 Dec 2007 19:56:16 +0000 (12:56 -0700)
PV domain break fault handler calls C routine reflect_event() with psr.ic = 0.
It might cause unrecoverable tlb miss. set psr.ic=1 before calling it.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/arch/ia64/xen/ivt.S

index f0f8c5f62c0cadc7c1495ed5eaea2969d72a1dc4..b9eb05e50c850bd5700313aea1136569dc3cf957 100644 (file)
@@ -714,15 +714,20 @@ fast_hypercall:
        adds r2=PT(CR_IFS)+16,r12
        ;;
        st8 [r2]=r20
-       ;;   
+       ssm psr.ic | PSR_DEFAULT_BITS
+       ;;
+       srlz.i
+       ;;
        br.call.sptk.many b0=reflect_event
        ;;
+       rsm psr.i|psr.ic
        adds r2=PT(R14)+16,r12
        adds r3=PT(R8)+16,r12
        ;;
        //r16 contains ar.bsp before cover
        ld8 r16=[r2]
        ld8 r8=[r3]
+       srlz.i
        ;;
        br.sptk.many ia64_ret_from_syscall
        ;;